With the increasing popularity of high resolution printers, also known as letter quality printers, such as 24 wire, resistive ribbon, ink jet and electrophotographic printers the amount of storage required to store the character generator has risen exponentially. Moreover, now that output of the printer is of a much higher quality there is a demand by users for greater variety in the number of type fonts that are available to them and also a desire to have the characters print in different pitches. The conventional way of supporting multiple type fonts and pitches is to create a character generator for each font and for each individual pitch. Each character generator, however, requires a certain quantity of memory and for higher resolutions, that quantity can be substantial.
Although the cost of memory per byte is decreasing, it nevertheless remains a significant factor in the design of computer printers. As an example, a 24 wire printer with a 24 .times. 24 character cell size increases the memory requirements by approximately 600% as compared to the popular 9 wire printers having a 9 .times. 12 character cell size. This increase is then multiplied by the number of fonts and pitches that must be included with the printer.
To accommodate the large character generator storage requirements, additional storage has to be added to the printer. Often the available storage is insufficient to store all characters which could be included if storage were not a concern. If the character generator storage requirements are reduced, significant efficiencies are achieved in that the overall storage requirements are reduced making more storage available for additional characters and printer microcode.
In U.S. Pat. No. 4,353,653 to Zimmerman for Font Selection and Compression For Printer Subsystem a method is taught for storing a base font with the blank slices eliminated, see col. 37 line 53 through col. 38, line 28. The printer responds to a character data stream by selecting the designated font and the appropriate character in real time, however, no provision is made for dynamically changing the character pitch in real time. IBM Technical Disclosure Bulletin, Jan. 1986, page 3563, entitled Compression/Decompression of Font Patterns also describes a technique for eliminating blank data slices. The technique of this TDB article teaches constructing a compressed character comprised of control bytes followed by data bytes. The control bytes designate the number and location of the blank slices.
Another technique for compressing printer font data is described in U.S. Pat. No. 4,458,333 to Smith for Dot Matrix Character Printing Using Constrained Memory. The method described in that patent includes the step of prestoring only a portion of the dot matrix defining the character, together with information designating at least one axis of reflective symmetry. Only those characters having at least one axis of reflective symmetry are amenable to the compression scheme of this patent. Two methods for decompressing the font data are described depending on the print head's direction of travel. No provision is made for changing the character pitch in real time.
In U.S. Pat. No. 4,467,363 to Tench for Graphic Data Compression a technique is described that constructs characters using only a sequence of commands. Each command consists of a prefix code and a content code. The prefix code determines one of three modes: continuous string, repeat column or bit-for-bit specification. The content code is a numerical parameter for the prefix code. Using the technique of this patent, characters are stored as a set of instructions and to reconstruct the character the entire instruction set must be executed. For example, if the prefix code designates the repeat column mode, the content code specifies the number of repetitions. Prior commands would generate the column; data depicting the character image is not stored, only instructions to the processor on where to place dot elements. Then a command to repeat the column a certain number of times would be processed. Such a method requires a substantial amount of processing time to reconstruct a character and no provisions are made for printing the character in different pitches or in either a forward or reverse direction.
U.S. Pat. No. 4,181,973 to Tseng for Complex Character Generator together with U.S. Pat. No. 4,573,199 to Chen et al. for Kanji/Chinese Font Generation By Scaling teach a technique for compressing font characters and scaling those characters for printing in different pitches. In the patent to Tseng, a set of symbols (or sub-matrices) are defined for the entire set of characters in the character set. For each character, a set of addresses pointing to the symbols necessary for generating a character are stored. The Chen et al. patent adds to the Tseng patent by inserting horizontal and vertical lines into the stored font to effect vertical and horizontal expansion.
A technique similar to that disclosed in the Tseng patent is described in IBM Technical Disclosure Bulletin, Feb. 1983, page 4582 entitled Font Compression In High Resolution Printers. There, a table is constructed containing vertical slices of character data which commonly occur in sequence in the font. For example, the sequence of slices representing the vertical stroke at the lift of a `B` or `D`. The characters in the font are represented by strings of table addresses.